const { studentsModel } = require('../models/studentsModel');
const jwt = require('jsonwebtoken');

// 登录
module.exports.login = async function(req, res, next) {
    //接受前端发送的数据
    const data = req.body;
    // console.log('前端发送的数据',data);
    //验证用户是否登录成功，实际就是在数据集合中查询是否有该用户的数据
    const result = await studentsModel.find(data);
    // console.log('查询结果:', result);
    //后端返回数据给前端
    if (result.length > 0) {
        //生成token，
        const token = jwt.sign(
            { _id: result[0]._id },  //保存用户的_id(必须为对象)
            'hello', //密钥-任意字符串
            { expiresIn: '1h' } //token有效期，纯数字单位默认秒(s)，若为分或小时，可直接拼接
        )
        res.send({
            message: '登录成功',
            code: 1,   //1 表示成功，0 表示失败
            token: 'Bearer ' + token //拼接'Bearer '，是因为后续再 token在认证时，需要在token前携带 'Bearer '
        });
    } else {
        res.send({
            message: '登录失败',
            code: 0
        });
    }
}

// 注册
module.exports.register = async function(req, res, next) {
    const data = req.body;
    // console.log(data);
    const result = await studentsModel.find({ phone: data.phone });
    if (result.length > 0) {
        res.send({
            message: '账号已存在，注册失败',
            code: 0
        });
    } else {
        const result = await studentsModel.create(data);
        // console.log(result);
        res.send({
            message: '注册成功',
            code: 1
        });
    }
}

//用户个人中心
module.exports.updateInformation = async function (req, res, next) {
    //  console.log(req.body);
     const {phone} = req.body
    //  console.log(phone);
    const result = await studentsModel.updateOne({phone:phone},req.body);
    // console.log(result);
    if(result.nModified>0){
        res.send({
            message: '资料修改成功',
            code: 1,   
        });
    }
    
}



// 验证token
module.exports.getStudentsInfo = async function (req, res) {
    //1.获取'请求头'中的token
    const tokenBearer = req.get('Authorization');
    //2.判断是否成功获取token这个字符串
    if (tokenBearer) {
        //3.拿取真正的token
        const token = tokenBearer.split(' ')[1];
        //4.解码token:拿到token中保存的用户信息
        const { _id } = jwt.verify(token, 'hello');
        //5.判断token中是否有_id
        if (_id) {
            //6.通过_id 查询数据库中的用户信息
            const result = await studentsModel.find({ _id });
            // console.log(result, 11111111111111);
            res.send({
                code: 1,
                message: '用户信息获取成功',
                result
            })
            return;
        }
    }
    //7.如果以上都没有进入，则返回失败信息给前端
    res.send({
        code: 0,
        message: '用户信息获取失败'
    })
}